﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace httpd_client
{
    //任务方向
    public class task_dir_t
    {
        public const UInt32 DIR_REQUEST = 0;                   // 请求
        public const UInt32 DIR_RESPONSE = 1;                  // 回复
        public const UInt32 DIR_NO_RESPONSE = 2;               // 不要求回复的请求
    };

    //任务类型
    public class  task_type_t
    {
        public const UInt32 TYP_SERV_QUIT = 1;//让服务器推出
        public const UInt32 TYP_LOG_SEND_TO_REMOTE = 3;                 // 将日志发送给远端

        public const UInt32 TYP_LOG = 4;

        public const UInt32 TYP_CONNECT_TO_SERV = 10000;
        public const UInt32 TYP_DISCONNECT_TO_SERV = 10001;
    };
    
    // 
    public class sock_type_t
    {
        
        public const UInt32 SOCK_TYP_LOG_GET = 0;
        public const UInt32 SOCK_TYP_LOG_ENTRY = 1;
        public const UInt32 SOCK_TYP_SERV_QUIT = 2;

    };

    /// <summary>
    /// 线程之间通信的任务定义
    /// </summary>
    public class thrd_comm_entry_t
    {
        public const UInt32 TASK_DATA_MAX_SIZE = 1024; //线程通信的最大数据长度

        public UInt32 dst;                                // 目的线程
        public UInt32 src;                                // 源线程
        public UInt32 session;                            // 会话ID，可以用于表示一个会话
        public UInt32 type;                                // 任务类型
        public UInt32 dir;                                  // 任务方向
        public UInt32 seqno;                              // 序列号，回复的序列号必须和请求的序列号相同
        public UInt32 status;                             // 状态, 0-OK
        public UInt32 ttl;                                // 存活周期
        public UInt32 data_size;                          // 携带的数据长度
        public byte[]  data_buf;     // 数据区

        public thrd_comm_entry_t()
        {
            data_buf = new byte[1024];
        }

    }
}
